package top.frsf.pattern.b_structural.b_proxy.c_cglib;

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;


/**
 * @author He Kuntao
 * @since 2025/5/12 17:21
 */
public class CGlibProxy implements MethodInterceptor {

    /**
     * @param obj 代理对象
     * @param method 被拦截的方法
     * @param args 方法参数
     * @param proxy 用于调用原始方法
     */
    @Override
    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
        System.out.println("== 前置处理 ==");
        // 调用原始方法
        Object result = proxy.invokeSuper(obj, args);
        System.out.println("== 后置处理 ==");
        return result;
    }
}
